package extenstion

/**
 * 扩展属性
 *
 * 注意，由于扩展并不会真正给类添加了成员属性，
 * 因此也没有办法让扩展属性拥有一个备份字段.这也是为什么初始化函数不允许有扩展属性。
 * 扩展属性只能够通过明确提供 getter 和 setter方法来进行定义.
 */
data class Ep(var name: String, var age: Int)

//扩展属性显示的提供setter和getter方法
var Ep.phAge: Int//扩展属性(虚龄)
    set(value) {
        age = value - 1
    }
    get() {
        return age + 1
    }

fun main(args: Array<String>) {
    val ep = Ep("花生", 15)
    println(ep)
    ep.phAge = 12
    println("phAge = ${ep.phAge}")
}
